<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<html>
<head>
<!--

/******************************************************************************
 * Copyright (c) 2005 IBM Corporation and others.
 * This program and the accompanying materials are made
 * available under the terms of the Eclipse Public License 2.0
 * which is available at https://www.eclipse.org/legal/epl-2.0/
 *
 * SPDX-License-Identifier: EPL-2.0

 *
 * Contributors:
 *    IBM Corporation - initial API and implementation 
 ****************************************************************************/

-->
</head>
<body>

<P>Provides a framework to support Eclipse resource change events, such as those that relate to 
{@link org.eclipse.core.resources.IFile IFile} and {@link
org.eclipse.core.resources.IMarker IMarker}.</P>

<h2>Listening to file resource changes</h2>
<P>To listen to changes in files, add an {@link
org.eclipse.gmf.runtime.common.ui.resources.IFileObserver IFileObserver} to the
{@link
org.eclipse.gmf.runtime.common.ui.resources.FileChangeManager#getInstance()
singleton instance} of the {@link
org.eclipse.gmf.runtime.common.ui.resources.FileChangeManager
FileChangeManager}, which implements {@link
org.eclipse.gmf.runtime.common.ui.resources.IFileChangeManager
IFileChangeManager}.   Depending on the {@link
org.eclipse.gmf.runtime.common.ui.resources.IFileChangeManager#addFileObserver(org.eclipse.gmf.runtime.common.ui.resources.IFileObserver)
addFileObserver} method used, the {@link
org.eclipse.gmf.runtime.common.ui.resources.FileChangeManager FileChangeManager}
also supports filtering based on the actual {@link
org.eclipse.gmf.runtime.common.ui.resources.IFileChangeManager#addFileObserver(org.eclipse.gmf.runtime.common.ui.resources.IFileObserver,
org.eclipse.core.resources.IFile) IFile}, {@link org.eclipse.gmf.runtime.common.ui.resources.IFileChangeManager#addFileObserver(org.eclipse.gmf.runtime.common.ui.resources.IFileObserver,
org.eclipse.core.resources.IFolder) IFolder}, or {@link org.eclipse.gmf.runtime.common.ui.resources.IFileChangeManager#addFileObserver(org.eclipse.gmf.runtime.common.ui.resources.IFileObserver,
java.lang.String[]) the file's extension}.</P>
<P>When finished listening, the {@link
org.eclipse.gmf.runtime.common.ui.resources.IFileChangeManager#removeFileObserver(org.eclipse.gmf.runtime.common.ui.resources.IFileObserver)
removeFileObserver} method should be called.

<P>Internally, the {@link
org.eclipse.gmf.runtime.common.ui.resources.FileChangeManager FileChangeManager}
notifies the {@link
org.eclipse.gmf.runtime.common.ui.resources.FileObserverManager
FileObserverManager} with {@link
org.eclipse.gmf.runtime.common.ui.resources.FileChangeEvent FileChangeEvent}
and {@link org.eclipse.gmf.runtime.common.ui.resources.MarkerChangeEvent
MarkerChangeEvent} objects.  The FileObserverManager is responsible
for managing the {@link
org.eclipse.gmf.runtime.common.ui.resources.IFileObserver IFileObserver} objects
that were added to the FileChangeManager and instantiating the appropriate
{@link org.eclipse.gmf.runtime.common.ui.resources.FileObserverFilter
FileObserverFilter} objects for them.
</P>

<h2>The FileModificationValidator</h2>

<P>The {@link
org.eclipse.gmf.runtime.common.ui.resources.FileModificationValidator
FileModificationValidator} is used to determine whether a file may be edited or
saved.  After obtaining the {@link
org.eclipse.gmf.runtime.common.ui.resources.FileModificationValidator#getInstance()
singleton instance} of the class, the methods {@link
org.eclipse.gmf.runtime.common.ui.resources.FileModificationValidator#okToEdit(org.eclipse.core.resources.IFile[], java.lang.String)
okToEdit} and {@link
org.eclipse.gmf.runtime.common.ui.resources.FileModificationValidator#okToSave(org.eclipse.core.resources.IFile)
okToSave} may be called, respectively.  More information is availabe from the
documentation of Eclipse's {@link
org.eclipse.core.resources.IFileModificationValidator
IFileModificationValidator}.</P>

<h2>Package Specification</h2>

<P>For more information, please see 
{@link org.eclipse.core.resources.IResource
org.eclipse.core.resources.IResource}</P>

@canBeSeenBy %partners
</body>
</html>